ウェブサーバー PersonalWS.x ver0.11 programmed by Mitsuky ● このプログラムは BGプロセスで動作するウェブサーバーです。セキュリティ関連の処理が無い ので実用には向きませんが、ローカル環境でHTTPネットワークを組んだり、 自作のWWWアプリケーションのデバッグ等には問題なく使えます。 ● インストール PersonalWS.x をパスの通ったディレクトリにコピーすればOKです。 ● 使い方 X680x0 を TCP/IP が使える状態にします。一般的には Neptune-X で使います が、ppp.x を使って RS-232C 経由でも使えます。電話回線越しのアクセスも不 可能ではありませんがやめておいた方が良いでしょう(後述)。 使用法 : PersonalWS [option] [ベースディレクトリ] [option] -Q文字列 : 終了文字列(無指定時は QUIT ) PersonalWS.x は指定された特定のファイルをアクセスすることでも常 駐解除が可能です。ファイルは実在しなくても構わないので文字列と表 記しています。 例)lynx http://localhost/QUIT このように "QUIT" をアクセスすると常駐解除できます(無指定時)。 例)PersonalWS -qBACKDOOR このように設定すると lynx http://localhost/BACKDOOR とすると常駐解除できます。セキュリティホールになる可能性があるの で十分長い文字列を設定するのが良いでしょう。 -R : 常駐解除 ベースディレクトリ ベースディレクトリ名+URL で指定されたパス名を実際のパスとしてファ イルを検索します。 例)PersonalWS C:/ このように設定すると、 lynx http://localhost/index.htm とした場合、C:/index.htm を返します。 ベースディレクトリを省略するとカレントディレクトリをベースとします 常駐後、外部からの HEAD/GET メソッドを受信すると指定したファイルのヘッ ダ/ファイル本体を送信します。 ● コメント 「特定のファイルをアクセスすると常駐解除」という変な仕様について解説し ておきます。元々BSDソケットが動いていた UNIX では CTRL+C でこの種のプ ログラムを中断する事ができたのですが、Human68K 版ではこの辺のシグナル機 構がイマイチ弱いためどうにもうまくいかないようです。一応 KILL シグナルを 受け取ったら常駐解除するような処理にしてはいるのですが、受信待ち中 (recvline() 実行中)は処理がそこで止まってしまうためシグナルのチェック が行われないようです。うまい処理方法をご存じの方は御一報願います。 ● 注意 セキュリティが全く無いので外部と接続するのはやめた方が良いと思います。 (任意のファイルが読めてしまいます) ● 今後の予定(は未定) ・ベースディレクトリで指定されたドライブ(未指定時にはカレントドライブ) 以外のファイルが読めない。かなり致命的。仕様バグなのでもうちょい考えよう。 ・PUT メソッドのサポート。 ・ファイル名を略した場合に index.htm を送信するようにする。 ● 配布規定 配布&改造自由のフリーウェアです。ソースの引用&組み込みも自由です。い ずれの場合も連絡の必要はありません。 また、大変申し訳ありませんが、本プログラムは無保証であり本プログラムに 起因するいかなる損失にも免責とさせて頂きます。 ● 謝辞 このプログラムを作るにあたり、 ・Mia-Httpd for X680x0 version 0.00 ;p みあみい氏作 を大いに参考にさせて頂きました。氏に深く感謝申し上げます。 ● 参考文献 ・Web クライアントプログラミング with Perl Clinton Wong 著(O'REILLY/オライリー・ジャパン) 満開製作所/山口光樹 (EOF)